Apparatus and method to configure a device, such as a printer, over a network

ABSTRACT

A device such as a printer, includes non-volatile memory storing a communications kernel. Upon startup, a microprocessor executes the communication kernel to prompt a host to download a setup kernel to the device. The microprocessor may verify the downloading using a check sum calculation. The microprocessor may execute the setup kernel to determine the operational characteristics on the device. For example, the microprocessor may interrogate the hardware elements of the device to determine a set of hardware characteristics. The microprocessor may also interrogate the device to determine a set of user selectable setup options and may further interrogate the device or a nonresident register for ownership and access attributes for selected modules and software. The microprocessor may link a number of resident and non-resident library modules, selected based on the operational characteristics. The library modules are dynamically linkable to reconfigure the software as operational characteristics change. The invention employs a dual kernel system, including a minimal communications kernel and a setup kernel to customize the device.

TECHNICAL FIELD

This invention relates to dedicated devices having a processor thatexecutes a set of instructions, and more particularly to the loading ofthe instructions for the processor.

BACKGROUND OF THE INVENTION

Many devices employ a processor executing instructions contained inembedded code. A small sampling of such devices include printers,copying machines, video cassette recorders (“VCR”), thermostats, and avariety of systems in automobiles such as the ignition system.Traditionally, these dedicated devices store their instruction sets in afixed form in a non-volatile memory, such as read-only memory (“ROM”).More recently, these dedicated devices have taken advantage ofreprogrammable non-volatile memories, such as erasable programmablememory (“EPROM”), electronically erasable PROM (“EEPROM”), and flash RAMto store the instruction sets. Programmable memories allow the dedicateddevice to be reprogrammed without the expense and inconvenience ofreplacing a ROM or motherboard.

Dedicated devices typically have the complete instruction set forrunning the device stored in the non-volatile memory. Such an approachhas a number of distinct drawbacks. For instance, storing the executablecode for anything but the most simple device requires a significantamount of non-volatile memory. The dedicated device may not beupgradable or may be difficult to upgrade, requiring the entireinstruction set to be reprogrammed. Such an upgrade may take aconsiderable period of time and may lead to corrupted executable coderendering the device permanently inoperative. This is particularly aproblem when the size of the program is considerable. Additionally, theuser of a dedicated device my not be aware of a significant upgrade andmay be running old, incompatible or corrupted programs.

SUMMARY OF THE INVENTION

Under one aspect of the invention, a dedicated device such as a printermay have a small amount of non-volatile memory to store a communicationskernel. Upon startup, a microprocessor in the dedicated device executesthe communication kernel to prompt a host, such as a server, to downloada setup kernel to a memory in the dedicated device. The microprocessormay determine a checksum value for return to the host to verify that thesetup kernel was correctly received. Upon verification of the setupkernel, the microprocessor may execute the instructions of the setupkernel to determine a set of operational characteristics of thededicated device. For example, the microprocessor may interrogate thehardware elements of the dedicated device to determine a set of hardwarecharacteristics. The microprocessor may also interrogate the dedicateddevice to determine the value of a set of user selectable setup options.The microprocessor may further interrogate the dedicated device or anonresident register for ownership attributes to, for example, determineownership and access rights to selected modules and software.

Upon determining the operational characteristics, the microprocessor mayselect a number of library modules based on the operationalcharacteristics and link the library modules to create an operationalprogram for the device. The microprocessor may download some, none, orall of the library modules and may link both resident and nonresidentlibrary modules.

The resulting device is specifically configured to take advantage of allof the hardware components contained in the device and to run the mostrecent versions of software. The device is further configured to operatein accordance with all user selected options and to allow access to anyfunctionality that the user has a right to access.

For example, in the case of a printer, appropriate library modules maybe linked to match the hardware characteristics of the printer, such asthe printhead and the transport mechanism. The linked libraries may alsomatch user selectable setup options, such as page size, duplex ornonduplex printing, and darkness or contrast. Further, in the case of aprinter, selected modules may be linked to provide access to certainfonts or print drivers that the user has purchased or licensed.

In a further aspect of the invention, the library modules aredynamically linkable to reconfigure the software as the operationalcharacteristics change. For example, the user of the dedicated devicemay vary the user selectable setup options or may pay a fee to access aparticular piece of code such as a particular font.

Thus, the device employs a dual kernel system, employing a minimalcommunications kernel stored in non-volatile memory to download a setupkernel that determines the operating characteristics and selectives orlinks library modules based on the determined characteristics. Eachdedicated device can be customized to provide the precise functionalitythat the user requires. The resulting dedicated device is easilyupgradable and permits easy and efficient testing and debugging. Suchtesting and debugging may take place over a network, such as theInternet.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a local area network.

FIG. 2 is a functional block diagram of a printer on the local areanetwork of FIG. 1.

FIG. 3 is a diagram of an exemplary graphical user interface for displayon a display screen of the printer of FIG. 2.

FIG. 4 is a flowchart showing the sequence of operations by amicroprocessor in the printer and a host to which the printer isattached, the host downloading executable code to the printer inresponse to a wake-up signal from a communications kernal in theprinter.

FIG. 5 is a flowchart of an alternative sequence of operations of themicroprocessor in the printer and the host to which the printer isattached, the host determining operational characteristics of theprinter in response to a wake-up signal from the communications kernalin the printer prior to downloading executable code.

FIGS. 6A and 6B show a flow chart of another alternative sequence ofoperations of the microprocessor in the printer and the host to whichthe printer is attached, the host downloading a setup kernal to theprinter to determine the operational characteristics.

FIG. 7 is a functional block diagram of an automatic data collection(“ADC”) device in the form of a symbol reader, such as a bar codereader.

FIG. 8 is a functional block diagram of an automatic data collectiondevice in the form of an RFID tag reader such as an interrogator.

DETAILED DESCRIPTION OF THE INVENTION

In the following description, certain specific details are set forth inorder to provide a thorough understanding of various embodiments of theinvention. However, one skilled in the art will understand that theinvention may be practiced without these details. In other instances,well known structures associated with microprocessors, computingsystems, and printers have not been shown or described in detail toavoid unnecessarily obscuring the description of the embodiments of theinvention. Further, while the description is given in terms of anexemplary printer, one skilled in the art will recognize that theteachings herein may be applied to other dedicated devices employing aprocessor executing an instruction set.

FIG. 1 shows a first local area network (“LAN”) 10 including first andsecond personal computers 12, 14, and a first printer 16 coupled to thesecond personal computer 14. A second printer 18, a server 20, and thefirst and second personal computers 12, 14 are each coupled to a LAN bus22, and all include an appropriate LAN interface (not shown), forexample, Ethernet interfaces 10Base-2, 10Base-T, or 10Base-5, with acoax connector, RJ45 connector, or a DB15 connector. The server 20 mayserve as a library for files to be transmitted and processed on the LAN10. The server 20 may further provide access to a network external fromthe LAN 10 such as a wide area network (“WAN”), the Internet or WorldWide Web, for example.

FIG. 1 further shows a second LAN 24 including a personal computer 26and a second server 28 coupled through a LAN bus 30. The second LAN 24may be distant from the first LAN 10, for example, at a vendor'smanufacturing or support facility for the printers 16, 18. A network 32such as the Internet may couple the first server 20 and the secondserver 28 providing a communications channel therebetween.

Referring to FIG. 2, the printer 18 includes a microprocessor 40 forexecuting executable instructions and controlling the various componentsof the printer 18. The microprocessor 40 receives a clock signal CLKfrom an oscillator or clock 42. Data and address busses couple themicroprocessor 40 to a read-only memory (“ROM”) 44, a random accessmemory (“RAM”) 46, and a print data buffer 48. The ROM 44 is anon-volatile memory having sufficient space to store a communicationskernel. The ROM 44 may take the form of an “EPROM,” “EEPROM,” or a flashmemory to permit the communications kernel to be upgraded. A kernal isthe level of an operating system or networking system that contains thesystem-level commands, or the functions hidden from the user, such asdevice drivers, memory management routines, and system calls. Thecommunications kernal is a minimum set of system-level set of commandsrequired to control a communications port.

The RAM 46 may take the form of volatile memory such as dynamic RAM. TheRAM 46 should contain sufficient memory to store at least a portion ofthe instruction set for controlling the printer 18. A portion of the RAM16 may form the print data buffer 48. Alternatively, the print databuffer 48 may be formed separately from the RAM 46. The print databuffer 48 should be sufficiently large to buffer print data to aprinthead 50.

While the printhead 50 will be discussed in terms of a thermalprinthead, other suitable printheads include laser printheads, impactprintheads, and inkjet printheads. The thermal printhead 50 includes alinear array of thermal elements 52 that may be selectively heated bythe application of electric signals corresponding to the data in theprint data buffer 48 and a strobe signal from a counter or timer 54 asis generally known in the art. The microprocessor 40 controls thecounter or timer 54 to synchronize the strobe signal with the print databuffer 48.

The microprocessor 40 further controls a stepper motor 56 and a platenroller 58. For each signal from the microprocessor 40 to the steppermotor 56, the stepper motor advances the platen roller 58 a givenincrement for advancing a print media such as paper past the printhead50.

The printer 18 may optionally include a raster image processor 41 toconvert vector graphics as text into a bit-mapped image. Alternatively,the microprocessor 40 may perform the conversion functions.

The printer 18 includes a set of printer controls 60 allowing a user toset a number of printer parameters. The printer controls 60 may take theform of a set of switches on the printer 18 accessible by the user.Additionally, or alternatively, the printer controls 60 may take theform of user-selectable icons in a graphical user interface (“GUI”) on adisplay 61 of the printer 18 or on a personal computer 14 associatedwith a printer 16 (FIG. 1). The printer may also have user input devicesuch as a keyboard, keypad, or touch sensitive screen 63.

The printer 18 further includes a communications port 62 for providingcommunications between the printer 18 and a network 22 or an associatedpersonal computer 12, 14 (FIG. 1). The communications port 62 may takethe form of a serial or parallel connector coupled to the microprocessor40. Communications port 62 is preferably coupled to the microprocessor40 through an input/output buffer (“I/O buffer”) 64. The I/O buffer 64buffers I/O data to permit the microprocessor 40 time to adequatelyprocess the I/O data.

Referring to FIG. 3, a graphical user interface 70 for display on thedisplay 61 of the printer 18 presents a variety of user selectable setupoptions. The GUI 70 includes a printing menu 72 having a number ofprinting options such as paper selection 74, manual feed selection 76,and page orientation 78. Many of the selectable icons may includeadditional pull-down menus, for example, the page orientation iconincludes portrait and landscape icons 80, 82 for selecting portrait andlandscape page orientations, respectively. Similarly, the GUI 70includes menus to configure the printer 84, set the PCL fonts 86, andselect a symbology 88, such as a bar code symbology.

In one embodiment, the GUI 70 may be implemented as a configurationhomepage transmitted to the display 61 from the printer manufacturer orvendor's website over the World Wide Web (WWW). Thus, the manufactureror vendor may easily upgrade the software on any or all of the devicesit has sold, as well as collect data regarding the actual use of thedevices. Pages may be transmitted using standard TCP/IP.

An exemplary method of operation will be discussed with principalreference to a routine 100 shown in FIG. 4 and secondary reference toFIGS. 1 and 2. The printer 18 may be started in step 102 for example, byactivating an on/off switch to cause the printer 18 to power up (step104). The microprocessor 40 employs a small, minimized set of executableinstructions or kernel stored in the ROM 44 to initialize the RAM 46 instep 106 and to set communications parameters for the communicationsport 62 in step 108.

At some time before or during this process, a host such as the server 28is started in step 112. The printer 18 sends a wakeup sequence to theserver 28 in step 110 and pauses in step 114. In step 116, the server 28receives the wakeup sequence. In response to a wakeup sequence, theserver 28 downloads to the Internet 32 a predefined set of instructions(e.g., executable code) to the printer 18 over the second LAN 24 in thestep 118. In step 120, the printer 18 receives the predefined set ofexecutable instructions at the communications port 62 over the first LAN10 and stores the set of executable instructions in the RAM 46 (FIG. 2).

In step 122, the microprocessor 40 calculates a checksum based on thevalue of the bits downloaded in step 120. In step 124, themicroprocessor 40 reports the checksum to the server 28. After reportingthe checksum, the printer 18 pauses at step 114 while the server 28, instep 126, verifies the checksum value against the value corresponding tothe executable instructions downloaded in step 118. If the checksumvalue does not verify, the server 28 issues a clear memory command tothe printer 18 in step 130. If the checksum does verify, the server 28ends its initialization routine in step 132. The printer 18 thus now hasa set of executable instructions loaded in RAM 46. The executableinstructions may represent any recent upgrades as stored in the server28. This may prove particularly convenient where, for example, theprinter manufacturer or vendor operates the server 28 and continuallyupgrades the server 28 to include the most recent set of software,including any bug fixes or revisions, new fonts and styles including newmachine readable symbologies such a bar code symbology fonts.

While the above operation was described in terms of the printer 18 asthe dedicated device and the server 28 as the host, a similar operationcould apply using the server 20 as the host, or using the printer 16 asthe device and either the personal computer 14, the server 20, or theserver 28 as the host.

As shown in FIG. 5, an alternative embodiment of the present inventionemploys a routine 200 that includes steps similar to routine 100 of FIG.4. This alternative embodiment, and those described herein, aresubstantially similar to previously described embodiments, and commonsteps and structures are identified by the same reference numbers. Onlysignificant differences in operation or structure are described indetail.

Referring to FIG. 5, in step 117 a host such as the server 28 determinesthe operational characteristics of a device, such as the printer 18prior to downloading suitable executable code. The server 28 maydetermine the operational characteristics in a variety of fashions. Forexample, the host may examine a number of user selectable setup options,such as page size, duplex printing, paper tray, or contrast. Theseoptions may be set by a user using a set of dedicated switches, forexample on a control panel 68 of the printer 18. The options may beentered by the user in response to a series of queries by the printer 18or associated personal computer 12, 14 at the initiative of the host,for example during start up or before each print job. The query may bein the form of a series of dialog boxes on the display 61. The optionsmay also be set through a menu of options available for selection on thedisplay 61 as part of a graphical user interface (“GUI”).

Alternatively, the host may examine hardware characteristics itself,without user involvement. For example, the server 28 may interrogate theprinter 18 to determine the printer hardware characteristics such asprinthead type, transport mechanism, and print engine type. In such acase, each hardware component in the printer 18 is assigned a hardwaretype identifier that is made available on the printer's 18 data bus,identifying, for example, the type of hardware, the manufacturer and themodel of the hardware component. The host may determine many of theoperational characteristics using this information to access a lookuptable. Where a lookup table is not convenient, the hardware componentsof the printer 18 may each make their own operational characteristicsavailable on the data bus. The server 28 may alternatively, oradditionally, examine the boot history of the printer 18, determiningwhich hardware components of the printer 18 were successfully booted up.

Further, the host may examine ownership parameters for various hardwarecomponents and software elements for use in the printer 18. For example,the server 28 may identify a set of fonts available to the printer 18 byway of a paid-up license. Such information may be stored in the printer18, or externally from the printer 18, for example at the vendor supportfacility. Similarly, the host may select an appropriate print driverbased on the printer hardware characteristics and the most recentprinter updates. Thus, the server 28 may automatically upgrade theprinter software each time the printer 18 is started, providing the mostrecent software for the given hardware configuration in step 118.

This may be particularly advantageous where individual hardwarecomponents of the printer are made available for upgrading thecapabilities of the printer 18. For example, this may permit a user toreplace a relatively low resolution printhead (300 dpi) with a higherresolution printhead (600 dpi). The host, server 20, 28 would thenprovide the appropriate driver software for the higher resolutionprinthead, thereby significantly upgrading the performance of theprinter 18 without the need to purchase an entire new printer. Thus,modularity in hardware design would provide significant benefits inconjunction with modular software design. For example, this might permita number of vendors to supply a variety of hardware components thatcould be easily swapped into and out of the device.

FIG. 6 shows another alternative embodiment of operation including asetup kernel of executable instructions downloaded to printer 18 by ahost, such as the server 28, to determine the operationalcharacteristics of the printer 18. Upon receiving the wakeup sequence instep 116, the server 28 downloads the setup kernel in step 119 to theprinter 18. In step 121, the printer 18 receives the setup kernel. Theprinter 18 may calculate a setup checksum in step 123 and report thesetup checksum in step 125 to the host, server 28. The printer 18 pausesin step 127 after reporting the setup checksum.

In step 127, the server 28 verifies the setup checkup sum by comparingthe checksum to the setup kernel that was downloaded to the printer 18in step 119. If the checksum does not verify, the server 28 issues aclear memory command in step 130. If the setup checksum verifies, themicroprocessor 40 executes the setup kernel in step 131 to obtain theoperational characteristics of the printer 18. In step 133, themicroprocessor 40 transmits the operational characteristics to theserver 28.

In step 134, the server 28 receives the operational characteristics fromthe printer 18. Based on the operational characteristics, the server 28,in step 118, downloads selected modules of executable code to theprinter 18. In step 120, the printer 18 receives the selected modulesand loads the executable instructions into the RAM 46. In steps 122-128,a checksum verification is performed to verify the download. Themicroprocessor 40 links selected library modules (in step 136) to formthe executable instruction set for running the printer 18. Linkingcomprises producing an executable program from one or more modules, suchas programs, routines or libraries. The library modules may bedynamically linkable libraries (“DLL”), to permit “on-the-fly”reconfiguration. In step 138, the microprocessor 40 executes the linkedlibrary modules to run the printer 18.

The teachings of U.S. patent application U.S. Ser. No. 09/240,108, filedJan. 29, 1999, entitled “REMOTE ANOMALY DIAGNOSIS AND RECONFIGURATION OFAN AUTOMATIC DATA COLLECTION DEVICE PLATFORM OVER A TELECOMMUNICATIONSNETWORK”; and provisional application U.S. Serial No. 60/084,272, filedMay 4, 1998, 1999, entitled “AUTOMATIC DATA COLLECTION DEVICE HAVING ANETWORK COMMUNICATIONS CAPABILITY” are incorporated herein by reference.

With reference to FIG. 7, an automatic data collection (“ADC”) deviceplatform having a bar code reader 90 adeptly accesses and retrieves datastored in the form of a bar code label. Data representing virtually anyproduct or service found in the marketplace may be encoded in a bar codelabel for later access by an ADC device platform having a bar codereader 90. For these reasons, ADC device platforms are now actively usedfor planning, controlling, producing, and analyzing most aspects ofcommerce. Bar code readers 90 include laser scanners as well as othermeans of collecting product information, such as a bar code wand, stillcamera or area imager 92. In addition to bar code labels, other ADC dataformats include Radio Frequency (“RF”) tags, magnetic strips, OpticalCharacter Recognition (“OCR”), speech input, and any symbol havingencoded data therein.

Thus, the ADC devices may include, for example, bar code readers 90(FIG. 7), radio frequency (“RF”) tag readers 94 (FIG. 8), SmartCardreaders, magnetic stripe readers, optical character recognition (“OCR”)readers, speech input recognition devices, and all forms of scanning orimaging devices. An exemplary RF tag reader suitable for use in the ADCdevice platform is described in U.S. application Ser. No. 08/771,320,entitled, “Automatic Mode Detection and Conversion System for Printersand Tag Interrogators,” filed on Apr. 27, 1998 and assigned to a commonassignee.

Reader commands may be received from bar code devices, 900 MHz devices96 (FIG. 8), and local or remote clients. Protocols can include a ProximOpen Air Radio MIB, a Scorpion 900 MHz Radio MIB, and a 802.11 MIB(“IEEE P802.11”), and other protocols, especially RF readable tagprotocols.

Although specific embodiments of, and examples for, the invention aredescribed herein for illustrative purposes, various equivalentmodifications can be made without departing from the spirit and scope ofthe invention, as will be recognized by those skilled in the relevantart. The teachings provided herein of the invention can be applied toany processor controlled device, not necessarily the exemplary printergenerally described above. For example, the teachings may apply to anycomputer peripheral device, such as a scanner, disk drive, CD_ROM drive,tape drive, or modem, whether or not the peripheral device includes aresident processor, or relies on a processor resident in an associatedcomputer.

Similarly, the teachings may be applied to other devices nottraditionally associated with a computer, such as a television, a VCR, awashing machine or dryer, and other home and commercial appliances andequipment. Thus, for example, a VCR may be upgrade to record in a formatother than VHS, or to reconfigure a control panel or GUI for programmingthe VCR. The VCR may thereby be kept up-to-date with changing standards.

The system may also employ a host other than the server 28. For example,one of the personal computers 12, 14 or the server 20 may serve as thehost, or the host may be a dedicated computer (not shown) that iscoupled to the network or Internet through the server 20, 28.

Thus, the method and apparatus permits traditionally dedicated or“embedded” devices to be actively reconfigured and/or upgraded accordingthe desires of the user. The method and apparatus further permit adevice to function using a limited amount of ROM. Further, the methodand apparatus automatically provide the device with the most recentsoftware that is compatible with the various hardware components, userselected options and ownership information. Additionally, the method andapparatus permit a technician to download diagnostic programs to thedevice and to troubleshoot and repair the device from a remote location.Thus a modularized, easily and automatically upgradable and repairabledevice is provided.

These and other changes can be made to the invention in light of theabove detailed description. In general, in the following claims, theterms used should not be construed to limit the invention to thespecific embodiments disclosed in the specification and the claims, butshould be construed to include all microprocessor controlled devicesthat operate in accordance with the claims. Accordingly, the inventionis not limited by the disclosure, but instead its scope is to bedetermined entirely by the following claims.

We claim:
 1. A method of configuring a printer comprising: initializinga volatile memory; executing a communications kernel resident in theprinter; downloading a setup kernel to the memory in the printer;executing the setup kernel to determine at least one operationalcharacteristic of the printer; and selectively linking a number oflibrary modules of executable instructions based on the determinedoperational characteristic of the printer.
 2. The method of claim 1wherein executing the setup kernel to determine at least one operationalcharacteristic includes checking a set of hardware characteristics ofthe printer.
 3. The method of claim 1 wherein executing the setup kernelto determine at least one operational characteristic includes checking aset of printer hardware characteristics including a printhead type. 4.The method of claim 1 wherein executing the setup kernel to determine atleast one operational characteristic includes checking a set of printerhardware characteristics including a transport mechanism type.
 5. Themethod of claim 1 wherein executing the setup kernel to determine atleast one operational characteristic includes checking a set of userselectable setup options.
 6. The method of claim 1 wherein executing thesetup kernel to determine at least one operational characteristicincludes checking a set of user selectable setup options including apage size.
 7. The method of claim 1 wherein executing the setup kernelto determine at least one operational characteristic includes checking aset of ownership attributes.
 8. The method of claim 1 wherein executingthe setup kernel to determine at least one operational characteristicincludes checking a set of ownership attributes corresponding to atleast one font.
 9. The method of claim 1 wherein downloading a setupkernel to the volatile memory in the printer includes receiving thesetup kernel over a network.
 10. The method of claim 1 whereindownloading a setup kernel to the volatile memory in the printerincludes receiving the setup kernel over the Internet.
 11. The method ofclaim 1 wherein selectively linking a number of library modulescomprises linking at least one module resident in the printer and atleast one module not resident in the printer.
 12. The method of claim 1,further comprising: calculating a check sum value from the downloadedsetup kernel; and verifying the downloaded setup kernel with the checksum prior to executing the setup kernel.
 13. The method of claim 1wherein executing the setup kernel to determine at least one operationalcharacteristic includes checking a set of ownership attributescorresponding to at least one font, and selectively linking a number oflibrary modules comprises linking a print driver with at least one fontmodule based on the ownership attributes.
 14. The method of claim 1wherein executing the setup kernel to determine at least one operationalcharacteristic includes checking a set of ownership attributescorresponding to at least one font, and selectively linking a number oflibrary modules comprises linking a print driver resident on the printerwith at least one font module not resident on the printer via theInternet based on the ownership attributes.
 15. A method of operating aprocessor controlled device, comprising: executing a first kernel ofinstructions stored in a memory of the device to monitor acommunications port of the device; executing a second kernel ofinstructions to interrogate the operational characteristics of thedevice; and linking a number of library modules of executableinstructions based on a results of the interrogation to create a dynamicset of executable operating instructions for the device.
 16. The methodof claim 15, further comprising: downloading the second kernel to thedevice.
 17. The method of claim 15, further comprising: downloading thesecond kernel to the device over the Internet.
 18. The method of claim15 wherein linking a number of library modules comprises linking atleast two library modules downloaded from a network and resident in thedevice.
 19. The method of claim 15 wherein linking a number of librarymodules comprises linking at least one library module resident in thedevice and at least one library module is not resident in the device.20. The method of claim 15 wherein linking a number of library modulescomprises linking at least one library module resident in the device andat least one library module resident in a computer coupled to thedevice.
 21. The method of claim 15 wherein executing a second kernel ofinstructions to interrogate the operational characteristics of thedevice comprises interrogating a set of hardware characteristics of thedevice.
 22. The method of claim 15 wherein the device is a printer andexecuting a second kernel of instructions to interrogate the operationalcharacteristics of the device comprises interrogating a set of hardwarecharacteristics of the printer including the resolution of a printhead.23. The method of claim 15 wherein executing a second kernel ofinstructions to interrogate the operational characteristics of thedevice comprises interrogating a set of user defined options of thedevice.
 24. The method of claim 15 wherein executing a second kernel ofinstructions to interrogate the operational characteristics of thedevice comprises interrogating a set of ownership attributes for atleast one of the number of library modules.
 25. The method of claim 15wherein the device is a printer and executing a second kernel ofinstructions to interrogate the operational characteristics of thedevice comprises interrogating a set of ownership attributes for atleast one of the number of library modules including a font librarymodule.
 26. The method of claim 15 wherein the device is a printer andexecuting a second kernel of instructions to interrogate the operationalcharacteristics of the device comprises interrogating a set of ownershipattributes resident on the device.
 27. The method of claim 15 whereinthe device is a printer and executing a second kernel of instructions tointerrogate the operational characteristics of the device comprisesinterrogating a set of non-resident ownership attributes.
 28. The methodof claim 15, further comprising: monitoring the operationalcharacteristics of the device; and dynamically relinking the librarymodules based on the operational characteristics of the device.
 29. Themethod of claim 15, further comprising: monitoring the operationalcharacteristics of the device; and dynamically relinking the librarymodules based on a current condition of a set of user defined options ofthe device.
 30. The method of claim 15, further comprising: monitoringthe operational characteristics of the device; and dynamically relinkingthe library modules based on a current condition of a set of ownershipattributes of the device.
 31. The method of claim 15, furthercomprising: calculating a check sum value from the second kernel; andverifying the second kernel with the check sum prior to executing thesecond kernel.
 32. A method of configuring a printer over a network,comprising: executing a communications kernel stored in a memory in theprinter, the first kernel consisting of instructions for monitoring acommunications port in the printer; receiving a setup kernel over thenetwork at the communications port in the printer; executing the setupkernel to determine at least one operational characteristic of theprinter; and linking a number of library modules of executableinstructions based on the operational characteristic of the printer. 33.The method of claim 32 wherein executing the setup kernel to determineat least one operational characteristic of the printer comprisesdetermining a hardware configuration of the printer.
 34. The method ofclaim 32 wherein executing the setup kernel to determine at least oneoperational characteristic of the printer comprises determining ahardware configuration of the printer including determining a printheadtype.
 35. The method of claim 32 wherein executing the setup kernel todetermine at least one operational characteristic of the printercomprises determining a hardware configuration of the printer includingdetermining a transport mechanism type.
 36. The method of claim 32wherein executing the setup kernel to determine at least one operationalcharacteristic of the printer comprises determining a hardwareconfiguration of the printer including determining a raster imageprocessor type.
 37. The method of claim 32 wherein executing the setupkernel to determine at least one operational characteristic of theprinter comprises determining user selectable options for the printer.38. The method of claim 32 wherein executing the setup kernel todetermine at least one operational characteristic of the printercomprises determining user selectable options for the printer includingdetermining a page size.
 39. The method of claim 32 wherein executingthe setup kernel to determine at least one operational characteristic ofthe printer comprises determining ownership attribute information forthe printer.
 40. The method of claim 32 wherein executing the setupkernel to determine at least one operational characteristic of theprinter comprises determining ownership attribute information for theprinter including determining an availability of a font for the printer.41. The method of claim 32 wherein executing the setup kernel todetermine at least one operational characteristic of the printercomprises determining ownership attribute information for the printerincluding determining an availability of a print driver for the printer.42. The method of claim 32, further comprising: monitoring theoperational characteristics of the printer; and dynamically linkingdifferent ones of the number of library modules based on the operationalcharacteristics.
 43. The method of claim 32, further comprising:calculating a check sum value from the received setup kernel; andverifying the received setup kernel using the check sum prior toexecuting the setup kernel.
 44. The method of claim 32, furthercomprising: linking the printer to a configuration homepage over theWorldwide Web.
 45. The method of claim 32, further comprising: linkingthe printer to a configuration homepage over the Worldwide Web whereinthe setup kernel is embedded in the configuration homepage.
 46. Themethod of claim 32, further comprising: linking the printer to aconfiguration homepage including a setup options menu; and displayingthe setup options menu at the printer.
 47. The method of claim 32,further comprising: linking the printer to a configuration homepageincluding a setup options menu; displaying the setup options menu at theprinter; and downloading a page format to the printer in response toselections from the setup options menu.
 48. A printer comprising: aprinthead; a communications port; and a processor controlling theprinthead, the processor executing: a communications kernel at a firsttime; a setup kernel at a second time, following the first time; and alinked library of executable modules at a third time, following thesecond time.
 49. The printer of claim 48 wherein the communicationskernel comprises a set of executable instructions to control thecommunications port of the printer.
 50. The printer of claim 48 whereinthe setup kernel comprises a set of executable instructions to determineat least one operational characteristic of the printer.
 51. A printercomprising: a printhead; a communications port; a processor controllingthe printhead; and a memory coupled to the processor to provideexecutable instructions thereto, the memory storing: a communicationskernel at a first time; a setup kernel at a second time, following thefirst time; and at least one module of a linked library of executablemodules at a third time, following the second time.
 52. The printer ofclaim 51 wherein the communications kernel comprises a set of executableinstructions to control the communications port of the printer.
 53. Theprinter of claim 51 wherein the setup kernel comprises a set ofexecutable instructions to determine at least one operationalcharacteristic of the printer.
 54. A method of configuring an automaticdata collection device, comprising: initializing a volatile memory;executing a communications kernel resident in the automatic datacollection device; downloading a setup kernel to the memory of theautomatic data collection device; executing the setup kernel todetermine at least one operational characteristic of the automatic datacollection device; and selectively linking a number of library modulesof executable instructions based on the determined operationalcharacteristic of the automatic data collection device.
 55. The methodof claim 54 wherein executing the setup kernel to determine at least oneoperational characteristic of the automatic data collection deviceincludes checking a set of hardware characteristics of the automaticdata collection device.
 56. A method of operating a processor controlledautomatic data collection device, comprising: executing a first kernelof instructions stored in a memory of the automatic data collectiondevice to monitor a communications port of the automatic data collectiondevice; executing a second kernel of instructions to interrogate theoperational characteristics of the automatic data collection device; andlinking a number of library modules of executable instructions based ona results of the interrogation to create a dynamic set of executableoperating instructions for the automatic data collection device.
 57. Amethod of operating a processor controlled automatic data collectiondevice wherein the automatic data collection device is a symbol reader,comprising: executing a first kernel of instructions stored in a memoryof the automatic data collection device to monitor a communications portof the automatic data collection device; executing a second kernel ofinstructions to interrogate the operational characteristics of theautomatic data collection device wherein executing the second kernel ofinstructions to interrogate the operational characteristics of theautomatic data collection device includes interrogating a set ofhardware characteristics of the symbol reader including an operatingcharacteristic of an imager in the symbol reader; and linking a numberof library modules of executable instructions based on a results of theinterrogation to create a dynamic set of executable operatinginstructions for the automatic data collection device.
 58. A method ofoperating a processor controlled automatic data collection devicewherein the automatic data collection device is an RFID tag reader,comprising: executing a first kernel of instructions stored in a memoryof the automatic data collection device to monitor a communications portof the automatic data collection device; executing a second kernel ofinstructions to interrogate the operational characteristics of theautomatic data collection device wherein executing the second kernel ofinstructions to interrogate the operational characteristics of theautomatic data collection device includes interrogating a set ofhardware characteristics of the RFID tag reader including an operatingcharacteristic of a radio in the RFID tag reader; and linking a numberof library modules of executable instructions based on a results of theinterrogation to create a dynamic set of executable operatinginstructions for the automatic data collection device.
 59. A method ofconfiguring an automatic data collection device over a network,comprising: executing a communications kernel stored in a memory in theautomatic data collection device, the first kernel consisting ofinstructions for monitoring a communications port in the automatic datacollection device; receiving a setup kernel over the network at thecommunications port in the automatic data collection device; executingthe setup kernel to determine at least one operational characteristic ofthe automatic data collection device; and linking a number of librarymodules of executable instructions based on the operationalcharacteristic of the automatic data collection device.
 60. The methodof claim 59 wherein executing the setup kernel to determine at least oneoperational characteristic of the automatic data collection deviceincludes determining an operating characteristic of an imager in theautomatic data collection device.
 61. A method of configuring anautomatic data collection device over a network, comprising: executing acommunications kernel stored in a memory in the automatic datacollection device, the first kernel consisting of instructions formonitoring a communications port in the automatic data collectiondevice; receiving a setup kernel over the network at the communicationsport in the automatic data collection device; executing the setup kernelto determine at least one operational characteristic of the automaticdata collection device wherein executing the setup kernel to determineat least one operational characteristic of the automatic data collectiondevice includes determining an operating characteristic of a radio inthe automatic data collection device; and linking a number of librarymodules of executable instructions based on the operationalcharacteristic of the automatic data collection device.
 62. An automaticdata collection device, comprising: an imager; a communications port;and a processor controlling the imager, the processor executing: acommunications kernel at a first time; a setup kernel at a second time,following the first time; and a linked library of executable modules ata third time, following the second time.
 63. An automatic datacollection device, comprising: an RF interrogator; a communicationsport; and a processor controlling the RF interrogator, the processorexecuting: a communications kernel at a first time; a setup kernel at asecond time, following the first time; and a linked library ofexecutable modules at a third time, following the second time.